Enterprises and organizations expose their business information and functionality on the web through software applications, usually referred to as “web applications.” Web applications provide great opportunities for an organization. The web applications use the Internet technologies and infrastructures. These applications are generally event-driven software programs which react to hyper text transfer protocol (HTTP) requests from the client. The applications are generally executed on application servers, constructed according to N-tier architecture, in which presentation, business logic, and data access layers are kept separate. Recently, the web applications have evolved into large-scale applications that demand more sophisticated computing services.
FIG. 1 shows an exemplary network system 100 that is utilized for executing web applications. System 100 includes clients 110-1 through 110-N, web servers 120-1 through 120-M, application servers 130-1 through 130-Q, back-end systems 150, a load balancer 160, and a network 170. Clients 110 submit requests (e.g., HTTP requests) to web servers 120 through network 170. Load balancer 160 distributes the requests among the servers 120 to balance the load between servers 120 and 130. Each of web servers 120 dynamically generates the presentation layer, for example, using servlets, or extensible markup language (XML), extensible style-sheet language (XSL), and the likes. Application servers 130 are often responsible for deploying and running the business logic layer and for interacting with and integrating various enterprise-wide resources, such as web servers 120, and back-end systems 150. The back-end systems 150 may include, for example, a database and a legacy system.
Current solutions for executing web applications fail to deliver services according to predefined service level agreements (SLAs). This is a major drawback as the ability to provide committed services increasingly becomes a competitive requirement. One of the reasons for this inability is the lack of a tool that manages, and controls the operation and load of web applications based on the applications' attribute. For example, if two web applications run on the same application server 120 one provides hotel information and the other runs reservation transactions, load between these applications is equally distributed, despite the fact that the latter application is more critical. In addition, load balancing between different modules of the same application cannot be performed by prior art solutions. As another example, for a financial web application having two modules, one for displaying the current stock price and the other for performing monetary transactions, serving requests targeted to the second module is fundamental.
In order to control web applications based on their attributes a mechanism that identifies and learns the applications executed over a system such as system 100 and the relation between applications' modules is required.